API вывода LLM позволяет вам запускать большие языковые модели (LLM) полностью на устройстве, что позволяет вам выполнять широкий спектр задач, таких как генерация текста, извлечение информации в форме естественного языка и резюмирование документов. Задача обеспечивает встроенную поддержку нескольких больших языковых моделей text-to-text, поэтому вы можете применять новейшие модели генеративного ИИ на устройстве к своим приложениям и продуктам.
Задача обеспечивает встроенную поддержку для различных LLM. Модели, размещенные на странице сообщества LiteRT , доступны в формате, удобном для MediaPipe, и не требуют дополнительных шагов преобразования или компиляции.
Вы можете использовать AI Edge Torch для экспорта моделей PyTorch в многосигнатурные модели LiteRT ( tflite
), которые связаны с параметрами токенизатора для создания Task Bundles. Модели, преобразованные с помощью AI Edge Torch, совместимы с LLM Inference API и могут работать на бэкэнде CPU, что делает их подходящими для приложений Android и iOS.
Начать
Начните использовать эту задачу, следуя одному из этих руководств по внедрению для вашей целевой платформы. Эти руководства для конкретных платформ проведут вас через базовую реализацию этой задачи с примерами кода, которые используют доступную модель и рекомендуемые параметры конфигурации:
Веб :
Андроид :
iOS
Подробности задания
В этом разделе описываются возможности, входы, выходы и параметры конфигурации этой задачи.
Функции
API вывода LLM содержит следующие ключевые функции:
- Генерация текста в текст — генерация текста на основе введенного текстового запроса.
- Выбор LLM - Применяйте несколько моделей, чтобы адаптировать приложение для ваших конкретных вариантов использования. Вы также можете переобучить и применить индивидуальные веса к модели.
- Поддержка LoRA — расширяйте и настраивайте возможности LLM с помощью модели LoRA, обучая ее на всех своих наборах данных или используя готовые предварительно созданные модели LoRA из сообщества разработчиков ПО с открытым исходным кодом (несовместимо с моделями, преобразованными с помощью API AI Edge Torch Generative).
Входные данные для задания | Результаты выполнения задачи |
---|---|
API вывода LLM принимает следующие входные данные:
| API вывода LLM выдает следующие результаты:
|
Варианты конфигураций
Эта задача имеет следующие параметры конфигурации:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
modelPath | Путь к месту хранения модели в каталоге проекта. | ПУТЬ | Н/Д |
maxTokens | Максимальное количество токенов (входные токены + выходные токены), которые обрабатывает модель. | Целое число | 512 |
topK | Количество токенов, которые модель рассматривает на каждом шаге генерации. Ограничивает прогнозы до k наиболее вероятных токенов. | Целое число | 40 |
temperature | Количество случайности, вводимое во время генерации. Более высокая температура приводит к большей креативности в сгенерированном тексте, в то время как более низкая температура обеспечивает более предсказуемую генерацию. | Плавать | 0.8 |
randomSeed | Случайное начальное число, используемое при генерации текста. | Целое число | 0 |
loraPath | Абсолютный путь к модели LoRA локально на устройстве. Примечание: совместимо только с моделями GPU. | ПУТЬ | Н/Д |
resultListener | Устанавливает прослушиватель результатов для получения результатов асинхронно. Применимо только при использовании метода асинхронной генерации. | Н/Д | Н/Д |
errorListener | Устанавливает необязательный прослушиватель ошибок. | Н/Д | Н/Д |
Модели
API вывода LLM поддерживает множество больших языковых моделей text-to-text, включая встроенную поддержку нескольких моделей, оптимизированных для работы в браузерах и на мобильных устройствах. Эти легкие модели можно использовать для выполнения выводов полностью на устройстве.
Перед инициализацией LLM Inference API загрузите модель и сохраните файл в каталоге вашего проекта. Вы можете использовать предварительно преобразованную модель из репозитория LiteRT Community HuggingFace или преобразовать модель в формат, совместимый с MediaPipe, с помощью AI Edge Torch Generative Converter .
Если у вас еще нет LLM для использования с LLM Inference API, начните с одной из следующих моделей.
Джемма-3 1Б
Gemma-3 1B — это последняя модель в семействе Gemma легких современных открытых моделей, созданных на основе тех же исследований и технологий, которые использовались для создания моделей Gemini . Модель содержит параметры 1B и открытые веса. Вариант 1B — самая легкая модель в семействе Gemma, что делает ее идеальной для многих вариантов использования на устройстве.
Модель Gemma-3 1B от HuggingFace доступна в формате .task
и готова к использованию с API вывода LLM для Android и веб-приложений.
При запуске Gemma-3 1B с API вывода LLM настройте следующие параметры соответствующим образом:
-
preferredBackend
: Используйте эту опцию для выбора междуCPU
илиGPU
backend. Эта опция доступна только для Android. -
supportedLoraRanks
: API вывода LLM не может быть настроен для поддержки адаптации низкого ранга (LoRA) с моделью Gemma-3 1B. Не используйте опцииsupportedLoraRanks
илиloraRanks
. -
maxTokens
: ЗначениеmaxTokens
должно соответствовать размеру контекста, встроенному в модель. Это также может называться кэшем Key-Value (KV) или длиной контекста. -
numResponses
: всегда должно быть 1. Эта опция доступна только для Web.
При запуске Gemma-3 1B в веб-приложениях инициализация может вызвать длительную блокировку в текущем потоке. Если возможно, всегда запускайте модель из рабочего потока.
Джемма-2 2Б
Gemma-2 2B — это вариант Gemma-2 2B, работающий на всех платформах.
Модель содержит параметры 2B и открытые веса. Gemma-2 2B известна своими передовыми навыками рассуждения для моделей своего класса.
Преобразование модели PyTorch
Генеративные модели PyTorch можно преобразовать в формат, совместимый с MediaPipe, с помощью AI Edge Torch Generative API . Вы можете использовать API для преобразования моделей PyTorch в многосигнатурные модели LiteRT (TensorFlow Lite). Для получения более подробной информации о сопоставлении и экспорте моделей посетите страницу AI Edge Torch GitHub .
Преобразование модели PyTorch с помощью AI Edge Torch Generative API включает следующие этапы:
- Загрузите контрольные точки модели PyTorch.
- Используйте API AI Edge Torch Generative для создания, преобразования и квантования модели в совместимый с MediaPipe формат файла (
.tflite
). - Создайте пакет задач (
.task
) из файла tflite и токенизатора модели.
Конвертер Torch Generative выполняет преобразование только для ЦП и требует наличия компьютера с Linux и объемом оперативной памяти не менее 64 ГБ.
Чтобы создать Task Bundle, используйте скрипт связывания для создания Task Bundle . Процесс связывания упаковывает сопоставленную модель дополнительными метаданными (например, параметрами токенизатора), необходимыми для запуска сквозного вывода.
Процесс объединения моделей требует пакет MediaPipe PyPI. Скрипт преобразования доступен во всех пакетах MediaPipe после 0.10.14
.
Установите и импортируйте зависимости с помощью следующей команды:
$ python3 -m pip install mediapipe
Используйте библиотеку genai.bundler
для объединения модели:
import mediapipe as mp
from mediapipe.tasks.python.genai import bundler
config = bundler.BundleConfig(
tflite_model=TFLITE_MODEL,
tokenizer_model=TOKENIZER_MODEL,
start_token=START_TOKEN,
stop_tokens=STOP_TOKENS,
output_filename=OUTPUT_FILENAME,
enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
Параметр | Описание | Принятые значения |
---|---|---|
tflite_model | Путь к экспортированной модели TFLite AI Edge. | ПУТЬ |
tokenizer_model | Путь к модели токенизатора SentencePiece. | ПУТЬ |
start_token | Начальный токен конкретной модели. Начальный токен должен присутствовать в предоставленной модели токенизатора. | НИТЬ |
stop_tokens | Модельные маркеры остановки. Маркеры остановки должны присутствовать в предоставленной модели токенизатора. | СПИСОК[СТРОКА] |
output_filename | Имя выходного файла пакета задач. | ПУТЬ |
Настройка LoRA
API вывода LLM Mediapipe можно настроить для поддержки адаптации низкого ранга (LoRA) для больших языковых моделей. Используя тонко настроенные модели LoRA, разработчики могут настраивать поведение LLM с помощью экономически эффективного процесса обучения.Поддержка LoRA API вывода LLM работает для всех вариантов Gemma и моделей Phi-2 для бэкэнда GPU, с весами LoRA, применимыми только к слоям внимания. Эта начальная реализация служит экспериментальным API для будущих разработок с планами поддержки большего количества моделей и различных типов слоев в будущих обновлениях.
Подготовка моделей LoRA
Следуйте инструкциям на HuggingFace , чтобы обучить точно настроенную модель LoRA на вашем собственном наборе данных с поддерживаемыми типами моделей Gemma или Phi-2. Модели Gemma-2 2B , Gemma 2B и Phi-2 доступны на HuggingFace в формате safetensors. Поскольку LLM Inference API поддерживает LoRA только на уровнях внимания, укажите только уровни внимания при создании LoraConfig
следующим образом:
# For Gemma
from peft import LoraConfig
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)
# For Phi-2
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)
Для тестирования доступны публично настроенные модели LoRA, которые соответствуют API вывода LLM, доступные на HuggingFace. Например, monsterapi/gemma-2b-lora-maths-orca-200k для Gemma-2B и lole25/phi-2-sft-ultrachat-lora для Phi-2.
После обучения на подготовленном наборе данных и сохранения модели вы получаете файл adapter_model.safetensors
, содержащий точно настроенные веса модели LoRA. Файл safetensors — это контрольная точка LoRA, используемая при преобразовании модели.
В качестве следующего шага вам необходимо преобразовать веса модели в TensorFlow Lite Flatbuffer с помощью пакета MediaPipe Python. ConversionConfig
должен указывать базовые параметры модели, а также дополнительные параметры LoRA. Обратите внимание, что поскольку API поддерживает вывод LoRA только с GPU, бэкэнд должен быть установлен на 'gpu'
.
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
# Other params related to base model
...
# Must use gpu backend for LoRA conversion
backend='gpu',
# LoRA related params
lora_ckpt=LORA_CKPT,
lora_rank=LORA_RANK,
lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
Конвертер выведет два файла TFLite flatbuffer: один для базовой модели, а другой для модели LoRA.
Вывод модели LoRA
API вывода LLM для веб-сайтов, Android и iOS обновлены для поддержки вывода модели LoRA.
Android поддерживает статический LoRA во время инициализации. Чтобы загрузить модель LoRA, пользователи указывают путь к модели LoRA, а также базовый LLM.// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
.setModelPath('<path to base model>')
.setMaxTokens(1000)
.setTopK(40)
.setTemperature(0.8)
.setRandomSeed(101)
.setLoraPath('<path to LoRA model>')
.build()
// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)
Чтобы запустить вывод LLM с LoRA, используйте те же методы generateResponse()
или generateResponseAsync()
что и в базовой модели.